Dokumentation zu den Sourcen von CAT, FRED, CATPUTZ und der MagicLib 3.3 Diese Datei ist ein drftiger Ersatz fr die Programmierdoku zu allen oben genannten Programmen, denn eine richtige Doku gibt es nicht. In dieser Datei wird beschrieben, wie man die Sourcen compilieren kann, was es an Besonderheiten zu beachten gibt, und wo man das MM2-System herbekommt. Zuallerst ein paar allgemeine Sachen. Die gesammelten Sourcen zu CAT und den anderen Programmen hierin unterliegen der CAT Public License, die als CATPL.TXT in diesem Paket enthalten ist. Wer neue Versionen von einem der Programme herausbringen will oder Žnderungen durchfhren will, muž diese Lizenz beachten. Die gesamten Sourcen zu CAT, CATPUTZ und FRED k”nnen nur gemeinsam verteilt werden, da alle 3 Programme einige Module gemeinsam nutzen. Wenn man das aufteilen wollte in drei verschiedene Sourcearchive, w„re ein Grožteil der Dateien mehrfach vorhanden. Daher gibt es nur dieses eine grože Archiv. 1. Wo erhalte ich das MM2-System Das Megamax Modula-2 System ist inzwischen Freeware. Erh„ltlich ist es ber die Homepage von Thomas Tempelmann, http://www.muc.de/~tt/files-d.html#MM2 Man kann es auch direkt per ftp beziehen: ftp://ftp.muc.de/mac/magicmac/Megamax_Modula-2_DevEnv.ZIP Das Archiv ist ca. 3,1 MB grož und enth„lt neben der Entwicklungs- umgebung auch s„mtliche Sourcen dazu, also auch die zum Compiler, Editor, Linker und Library. 2. Wie richte ich die MM2-Entwicklungsumgebung ein? Wenn man ein MM2-System installiert hat, sollte man unter dem MM2-Directory folgende Directories einrichten: CAT\ PUTZ\ MAGIC\ Man kann dazu einfach die Dateien aus diesem Archiv mit der gesamten Ordnerstruktur in das Stammverzeichnis vom MM2-System verschieben. Anschliežend sind die entsprechenden Einstellungsdateien fr CAT, CATPUTZ und die MagicLib zu erstellen. Dies sind sowohl die M2P-Dateien, in der die Parameter der Shell eingestellt werden, als auch die M2B-Dateien, in der Pfade und Tools eingetragen werden. Passende M2B-Dateien liegen diesem Archiv bei. Diese mssen ggf. noch angepažt werden, die Anpassungen sollten aber minimal sein. Zum Erstellen einer M2P-Datei geht man wie folgt vor: Einstellen der Shell-Parameter (Parameter/Shell) Dort tr„gt man folgendes ein: Make: MM2MAKE Temp-Pfad: *\TMP Batchdatei: *\CAT.M2B Parameterdatei: CAT.M2P Dabei muž der Pfad zur Parameterdatei ein voll qualifizierter Pfad sein, also zum Beispiel D:\MM_21\CAT.M2P. Die anderen Parameter kann man einstellen, wie es einem pers”nlich am besten gef„llt. Einstellen der Editor-Parameter (Parameter/Editor): Ich empfehle, als Editor FRED zu verwenden, den Editor aus dem CAT-Paket. Dieser arbeitet mit der MM2-Umgebung hervorragend zusammen. Dafr sind folgende Einstellungen vorzunehmen: Editor: Vollst„ndiger Pfad zu FRED, z.B: D:\MM_21\CAT\MOD\FRED.PRG Die folgenden Schalter mssen gesetzt sein, die anderen nicht: Shell durchsucht Source-Pfade fr den Editor Argumentzeile an Editor: Name der Source, Fehlerposition, Fehlermeldung Editor versteht SE-Protokoll Editor parallel starten Dabei gehe ich davon aus, daž in dem MM2-Paket eine aktuelle Shell enthalten ist, die das SE-Protokoll versteht! Einstellen der Compiler-Parameter (Parameter/Compiler): Die einzige Žnderung hier wird an den Direktiven vorgenommen, ansonsten kann alles beim Default bleiben. Bei den Direktiven ist folgendes einzutragen: Z+ S- F- /I40000 Damit wird bei einfachen Ergebnissen von Funktionen dieses in D0 zurck- gegeben, der Stackcheck ausgeschaltet, die FPU nicht benutzt und der Bezeichnerstack auf 40000 Zeichen gesetzt. Der Stack-Check muž ausgeschaltet sein, da ansonsten fehlerhafterweise bei einigen Prozeduraufrufen innerhalb von CAT Stackfehler angemeckert werden (die definitiv nicht auftreten), und der Bezeichnerstack muž erh”ht werden, da sonst MAUSTAUS.D, welches die Bezeichner der Resourcedatei einschliežt, nicht compiliert werden kann. Die Ergebnisrckgabe ber D0 wird aus Geschwindigkeitsgrnden in CAT immer benutzt. Da diese Option auch teil- weise im Source gesetzt wird, ist sie auch hier zwingend. Einstellen der Linker-Parameter (Parameter/Linker): Dort muž man die Anzahl der Module fr CAT auf 200 einstellen, ansonsten ist CAT nicht linkbar. Als Stackgr”že muž man 16384 einstellen, mit weniger l„uft CAT wahrscheinlich nicht! Der erste Treiber M2INIT muž zwingend enthalten sein, da dieses Modul die MM2-Libraries initialisiert. Falls man Debug-Versionen erstellen m”chte, sollte man keine Optimierung einstellen und als Treiber GEMError.IMP eintragen. Ansonsten kann man vollst„ndige Optimierung anw„hlen und keine weiteren Treiber (aužer M2INIT) aktivieren. Einstellen der Umgebungs-Parameter: Unter Info/Umgebung kann man noch die Default-Makedatei eintragen. Dies sollte *\CAT\CAT.M2M sein. Dort sollte man auch als Stackgr”že fr das Loadtime-Linking 16384 eintragen. Nachdem man all diese Einstellungen vorgenommen hat, kann man nun die Parameter speichern. Dabei werden diese in die unter Parameter/Shell eingetragene Parameterdatei geschrieben, in diesem Beispiel also in CAT.M2P. Anschliežend kann man das gleiche auch noch fr die anderen ben”tigten Parameterdateien vornehmen, die wir brauchen, also FRED.M2P, PUTZ.M2P und MAGIC.M2P. Dazu muž man nur unter Parameter/Shell die Batchdatei und die Parameterdatei „ndern, dazu noch die Default-Makedatei unter Info/Umgebung, und dann die Parameter speichern. 3. Wie compiliere ich die MagicLib? Im Ordner MAGIC existieren die folgenden 4 Dateien: libdef.m toolsdef.m libimp.m toolsimp.m Diese sind in dieser Reihenfolge zu compilieren. Dazu selektiert man diese Dateien einfach, und drckt dann C fr Compile. Nachdem man dieses durchgefhrt hat, kann man sich eine M2M-Datei (Make-Datei) mittels ModRef ber die Datei MagicMak.M erstellen lassen. Dieses Modul benutzt alle Magic-Module, man kann dadurch dann sich eine Make-Datei erstellen lassen, die nur noch die ge„nderten Sourcen compiliert. 4. Wie compiliere ich CAT? Zur erstmaligen Compilation von CAT gibt es eine Datei namens CAT.M2C. Diese Datei ist eine Batchdatei fr den Compiler, die alle Module von CAT compiliert. Vorher muž allerdings die MagicLib compiliert werden, ansonsten hagelt es Fehler. Zum compilieren selektiert man die Datei CAT.M2C und drckt C in der Shell. Wenn alles compiliert ist (kann je nach Rechner zwischen 5 Minuten bis zu 1h (8MHz ST, gesch„tzt) dauern), kann man mittels des ModRef-Tools sich eine Make-Datei zu CAT erstellen lassen. Wenn man diese hat, muž man nur noch M in der Shell drcken, wenn man irgendwas ge„ndert hat, und alles wird entsprechend neu compiliert. Die Resourcedateien von CAT liegen im MOD-Ordner. Im Gegensatz zu CATPUTZ ist die Resourcedatei von CAT fr Pascal definiert. Interface legt dann eine CAT.ICL-Datei an, die von dem Modul MausTauschrsc eingeschlossen wird. Relevant ist immer die Datei von CAT, und wenn man Žnderungen an einer Resource vornimmt, dann muž man diese Žnderungen auch an der anderen Resource vornehmen. Relevant sind nur noch CAT.RSC und CATCOL.RSC, die Resourecdatei CATMID.RSC wird zur Zeit nicht verwendet und ist daher auch nicht auf einem aktuellen Stand. Ich habe sie trotzdem im Archiv gelassen, damit jemand sie anpassen kann, falls er Interesse hat. 5. Wie compiliere ich CATPUTZ? Zur erstmaligen Compilation von CATPUTZ gibt es eine Datei namens CATPUTZ.M2C. Diese Datei ist eine Batchdatei fr den Compiler, die alle Module von CATPUTZ compiliert. Vorher mssen allerdings sowohl die MagicLib als auch CAT compiliert werden, ansonsten hagelt es Fehler. Zu beachten ist dabei, daž die Dateien mit den Definitionen der Resource im MOD\-Ordner liegen. Diese mssen auch compiliert werden, und zwar vor den anderen Modulen. Sollte man die Resource-Datei „ndern, so muž die Definitionsdatei dazu auch neu compiliert werden. Dabei muž man dann die Kommentarklammern, die Interface um die EXPORT-Liste setzt, entfernen, da diese in CATPUTZ ben”tigt wird (im Gegensatz zu CAT und zu FRED). 6. Wie compiliere ich FRED? Dazu muž man zuerst in der Datei EDITTYPE.D die Zeile CONST CAT = TRUE; auf CONST CAT = FALSE; „ndern. CAT sollte man schonmal compiliert haben, damit die meisten Definitionsmodule vorhanden sind. Anschliežend compiliert man noch folgende Module: MOD\FREDRSC.D MOD\FREDRSC.I PLISTHEL.D PLISTHEL.I FREDPROT.D FREDPROT.I FRED.M Auch hierbei ist zu beachten, daž die Dateien mit den Definitionen der Resource im MOD\-Ordner liegen. Anschliežend erstellt man mittels des ModRef-Tools eine Make-Datei fr FRED, die man dann dem MAKE vorwirft. Sollten beim ModRef noch andere Dateien angemeckert werden, deren Definitionsmodule nicht gefunden werden, so mssen diese auch einmal per Hand compiliert werden. Fr weitere Arbeiten an CAT ist danach die Konstante CAT wieder auf TRUE zu setzen. 7. Sonstige Besonderheiten Im Source-Ordner von CAT sind einige Module, die auch so in der Library vom MM2-System enthalten sind. Dabei handelt es sich um die Module GEMError.I, GEMScan.I, Storage.I und StorBase.I. GEMError und GEMScan sind Module zur Fehlerbehandlung, die ich so umgestellt habe, daž sie die MagicLib benutzen und nicht mehr die MM2-GEM-Library. Dadurch wurden unoptimierte Programme etwas kleiner, aužerdem wurden die Fehleralerts tastaturbedienbar. Bei Storage und StorBase handelt es sich um die Speicherverwaltung vom MM2. Ich habe diese Module so modifiziert, daž sie sich nicht mehr in die Speicherverwaltung vom GEMDOS reinh„ngen und nicht mehr dauernd Aufrufe im Supervisormodus machen. Dadurch wurde die Speicher- verwaltung sauberer. Diese vier Module sind nicht zwingend in der Form, wie ich sie mitliefere, zu benutzen, man kann auch die MM2-Originale nehmen, aber meine sind besser, daher sollten sie benutzt werden. In den Ordnern SRC\ und SYS\ befinden sich die Sourcen bzw. die compilierten Module zum SE-Protokoll. Diese werden von FRED ben”tigt. Man kann diese Module einfach so in die entsprechenden Ordner des MM2- Systems kopieren (falls nicht vorhanden!). Sollten Versionskonflikte angemeckert werden, so muž man dieses Modul vor der Compilation von FRED auch compilieren. In der Datei CAT.M2D befindet sich die komplette Entwicklungshistory von CAT und auch FRED. Diese ist interessant, da man darin zumindest zum Teil sehen kann, welche Module was machen. Im Ordner DIST\ befinden sich die sonstigen Dateien, die zu einer CAT- Distribution geh”ren, also MausTausch-Scripte, die Fonts, das Datums- Programm und noch ein paar andere Texte und Dateien. 8. Warum haben alle .D-Dateien das Datum 24.10. oder 26.10.? Weil ich mich touch *.d alle Dateien modifiziert habe, um durch das Make die Batchdateien zum erstmaligen compilieren zu generieren. Einen anderen Grund gibt es dafr nicht. So, das wars erstmal. Als Doku ist das sicherlich nicht zu gebrauchen, aber zum Einstieg sollte es so gerade reichen. Die Grundlagen und die Bedienung vom MM2-System erkl„re ich nicht, dazu gibt es eine Anleitung (hoffe ich). Zum Rest kann ich nur noch eines sagen: Use the source, Luke!